package com.petdog.module.community.service;

import com.petdog.infrastructure.entity.Community;
import com.petdog.module.community.dto.CommunityCreateRequest;
import com.petdog.module.community.dto.CommunityUpdateRequest;
import com.petdog.module.community.dto.CommunityDetailResponse;
import com.petdog.module.community.dto.CommunityListResponse;

import java.util.List;
import java.util.Map;

/**
 * 社区服务接口
 */
public interface CommunityService {
    
    /**
     * 创建社区
     */
    Long createCommunity(CommunityCreateRequest request);
    
    /**
     * 更新社区信息
     */
    boolean updateCommunity(CommunityUpdateRequest request);
    
    /**
     * 删除社区
     */
    boolean deleteCommunity(Long communityId, Long userId);
    
    /**
     * 查询社区详情
     */
    CommunityDetailResponse getCommunityDetail(Long communityId);
    
    /**
     * 分页查询社区列表
     */
    List<CommunityListResponse> getCommunityList(Map<String, Object> params);
    
    /**
     * 搜索社区
     */
    List<CommunityListResponse> searchCommunities(Map<String, Object> params);
    
    /**
     * 获取热门社区
     */
    List<CommunityListResponse> getHotCommunities(Integer limit);
    
    /**
     * 获取用户加入的社区
     */
    List<CommunityListResponse> getUserCommunities(Long userId);
    
    /**
     * 判断用户是否已加入社区
     */
    boolean isUserInCommunity(Long userId, Long communityId);
    
    /**
     * 获取社区总条数
     */
    long countCommunities(Map<String, Object> params);
    
    /**
     * 获取搜索社区的总条数
     */
    long countSearchCommunities(Map<String, Object> params);
}
